package writtenTraining.day25;

import java.util.*;

/**
 * day25:(1)模拟：BC145 笨小猴
 */
public class Main {
    public static void main(String[] args) {
        // 模拟

        // 输入
        Scanner in = new Scanner(System.in);
        char[] str = in.next().toCharArray();

        int len = str.length;
        int[] hash = new int[26];
        int minCount = 0x3f3f3f3f, maxCount = 0;
        // 提炼次数
        for (int i = 0; i < len; i++) {
            hash[str[i] - 'a']++;
        }

        for (int i = 0; i < 26; i++) {
            if (hash[i] != 0 && hash[i] < minCount) {
                minCount = hash[i];
            }

            if (hash[i] > maxCount) {
                maxCount = hash[i];
            }
        }

        int target = maxCount - minCount;
        if (target > 1) {
            for (int i = 2; i <= Math.sqrt(target); i++) {
                // 不为质数的情况
                if (target % i == 0) {
                    System.out.println("No Answer");
                    System.out.println(0);
                    return;
                }
            }

            System.out.println("Lucky Word");
            System.out.println(target);

        } else {

            System.out.println("No Answer");
            System.out.println(0);
        }

    }
}


/**
 * day25:(2)排序：NC383 主持人调度（一）
 */



 class Solution {

    public boolean hostschedule (ArrayList<ArrayList<Integer>> schedule) {
        // 排序
        int n = schedule.size();
        Collections.sort(schedule, (a, b)-> {
            return  a.get(0).compareTo(b.get(0));
        });

        for(int i = 0; i < n - 1; i++) {
            if(schedule.get(i).get(1) > schedule.get(i+1).get(0)) {
                return false;
            }
        }

        return true;
    }
}

/**
 * day25:(3)动态规划+01背包问题（装满）：DP45 分割等和子集
 */


 class Main2 {
    public static void main(String[] args) {
        // 01 背包问题（装满）

        // 输入、
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();

        int[] nums = new int[n];
        int sum = 0;
        // 计算总和
        for(int i =0; i < n; i++) {
            nums[i] = in.nextInt();
            sum += nums[i];
        }

        // 特判
        if(sum % 2 == 1) {
            System.out.println(false);

        } else {
            // 创建dp
            int target = sum / 2;
            int[][] dp = new int[n+1][target + 1];

            // 初始化
            for(int j = 1; j <= target; j++) {
                dp[0][j] = -1;
            }
            for(int i = 1; i <= n;i++) {
                for(int j = 1; j <= target; j++) {
                    // 先继承前面的位置
                    dp[i][j] = dp[i-1][j];
                    if(j - nums[i-1] >= 0 && dp[i][j-nums[i-1]] != -1) {
                        dp[i][j] = Math.max(dp[i][j]
                                , dp[i - 1][j-nums[i-1]] + nums[i - 1]);
                    }
                }
            }

            System.out.println(dp[n][target] == target ? true : false );
        }
    }
}


/**
 * day25:(3)动态规划+01背包问题（装满 + 滚动数组空间优化版）：DP45 分割等和子集
 */


 class Main3 {
    public static void main(String[] args) {
        // 01 背包问题（装满）（空间优化版）

        // 输入、
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();

        int[] nums = new int[n];
        int sum = 0;
        // 计算总和
        for(int i =0; i < n; i++) {
            nums[i] = in.nextInt();
            sum += nums[i];
        }

        // 特判
        if(sum % 2 == 1) {
            System.out.println(false);

        } else {
            // 创建dp
            int target = sum / 2;
            int[] dp = new int[target + 1];

            // 初始化
            for(int j = 1; j <= target; j++) {
                dp[j] = -1;
            }
            for(int i = 1; i <= n;i++) {
                for(int j = target ; j >= nums[i-1]; j--) {
                    // 先继承前面的位置

                    if( dp[j-nums[i-1]] != -1) {
                        dp[j] = Math.max(dp[j]
                                , dp[j-nums[i-1]] + nums[i - 1]);
                    }
                }
            }

            System.out.println(dp[target] == target ? true : false );
        }
    }
}


